from django import template
from django.db.models import Count

from blogSystem1.models import Category, Tag, Article, UserInfo

register = template.Library()


@register.inclusion_tag('user/classification.html')
def get_classification_style(username):
    user = UserInfo.objects.filter(username=username).first()
    print(username)
    # 获取当前站点对象
    blog = user.blog

    categories = Category.objects.filter(blog=blog).values('pk').annotate(count=Count('article__title')).values_list(
        'title', 'count')

    # 查询当前站点的每一个 标签 名称以及对应的文章数
    tags = Tag.objects.filter(blog=blog).values('pk').annotate(count=Count('article')).values_list('title', 'count')

    # 查询当前站点每一个年月的名称以及对应的文章数
    # 方式一：
    list_date = Article.objects.filter(user=user).extra(
        select={'y_m_date': 'date_format(create_time,"%%Y-%%m")'}).values('y_m_date').annotate(
        count=Count('nid')).values_list('y_m_date', 'count')

    # 方式二：
    # list_date = Article.objects.filter(user=user).annotate(month=TruncMonth('create_time')).values('month').annotate(count=Count('nid')).values_list('month','count')
    data = {
        'username': username,
        'blog': blog,
        'categories': categories,
        'tags': tags,
        'list_date': list_date,
    }
    return data
